package com.xuetang9.utils.sn;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xuetang9.utils.LoggerUtils;

import java.io.IOException;

/**
 * @类: JacksonUtils
 * @描述: json字符串转换工具类
 * @date: 2020/5/14
 * @author: Admin
 * @ver 1.0.0
 * @since JDK 1.8
 */
public final class JacksonUtils {

    /**
     * 将json字符串转换成对象
     * @param result json字符串
     * @param clazz 要转换成的对象类
     * @param <T> 泛型
     * @return 转换后的对象
     */
    public static <T>T getMessageBO(String result,Class<T> clazz)  {
        T t = null;
        try {
            t = clazz.newInstance();
            //创建jackson提供的转换对象
            ObjectMapper objectMapper = new ObjectMapper();
            //通过转换对象提供的方法进行转换
            return objectMapper.readValue(result,clazz);
        } catch (JsonProcessingException  e) {
            LoggerUtils.error("json字符串转对象失败：[{}],错误信息：【{}】",clazz,e.getMessage());
        } catch (IllegalAccessException | InstantiationException| IOException  e) {
            LoggerUtils.error("json字符串转对象失败-创建对象失败,错误信息：【{}】",e.getMessage());
        }
        return t;
    }
}
